package org.fg.logclienta.controller;

import cn.hutool.core.util.StrUtil;
import com.fingard.luna.framework.base.multithread.ThreadContext;
import lombok.extern.slf4j.Slf4j;
import org.fg.logcommon.Constant;
import org.fg.logcommon.util.HttpUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.stream.IntStream;

@Slf4j
@RestController
@RequestMapping("/api/log-a")
public class ClientAController {

    @PostMapping("/log-trigger")
    public String logA() {
        log.info("================================= 【log-client-a】  的日志开始 =====================================");
        log.info("【log-client-a】 请求进入 ClientCController#logC 方法， 这是 log-client-a 的日志......");
        log.warn("【log-client-a】 log-client-a 开始处理业务方法！！！");
        log.info("【log-client-a】 开始请求 log-client-c ==============================>");
        requestC();
        log.info("【log-client-a】 请求 log-client-c 结束==============================>");
        log.info("【log-client-a】 log-client-a 完成业务方法的处理， 返回中 。。。。。。");
        log.info("================================= 【log-client-a】  的日志结束 =====================================");
        return "client a";
    }

    private void requestC(){
        String url = "http://127.0.0.1:8993/api/log-c/log-trigger";
        HashMap<String, String> head = new HashMap<>();
        String mdcKey = ThreadContext.getAttribute(Constant.MDC_KEY);
        if (StrUtil.isNotEmpty(mdcKey) && !"0".equals(mdcKey)) {
            head.put(Constant.MDC_KEY, mdcKey);
        }
        HttpUtils.post(url, head, new HashMap<>());
    }

    @PostMapping("/trigger-test")
    public String logTriggerTest() {
        log.info("loga 打印的日志");
        return "testA";
    }
}
